Telegram Group & Telegram Channel
🌀 Middleware и RoundTripper в Go: гибкая обработка HTTP-запросов

В Go нет встроенного понятия "middleware", как в других фреймворках — но вы можете легко реализовать его сами, особенно в контексте http.RoundTripper.

🔧 RoundTripper — это интерфейс, который обрабатывает HTTP-запросы на уровне клиента (`http.Client`). Это даёт возможность внедрять логику *до* и *после* отправки запроса.

🧱 Пример: логгер запросов

type LoggingRoundTripper struct {
rt http.RoundTripper
}

func (l *LoggingRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
log.Printf("📤 Запрос: %s %s", req.Method, req.URL)
resp, err := l.rt.RoundTrip(req)
if err == nil {
log.Printf("📥 Ответ: %d", resp.StatusCode)
}
return resp, err
}


📦 Использование:

client := &http.Client{
Transport: &LoggingRoundTripper{rt: http.DefaultTransport},
}


💡 Таким образом, вы можете создавать middleware прямо внутри http.Client, например:
• логирование
• кэширование
• модификация заголовков
• retry-логика
• трейсинг

🔗 Подробнее: dev.to/calvinmclean/middleware-and-roundtrippers-in-go-30pa

#golang #httpclient #middleware #webdev #devtools



tg-me.com/golang_books/994
Create:
Last Update:

🌀 Middleware и RoundTripper в Go: гибкая обработка HTTP-запросов

В Go нет встроенного понятия "middleware", как в других фреймворках — но вы можете легко реализовать его сами, особенно в контексте http.RoundTripper.

🔧 RoundTripper — это интерфейс, который обрабатывает HTTP-запросы на уровне клиента (`http.Client`). Это даёт возможность внедрять логику *до* и *после* отправки запроса.

🧱 Пример: логгер запросов


type LoggingRoundTripper struct {
rt http.RoundTripper
}

func (l *LoggingRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
log.Printf("📤 Запрос: %s %s", req.Method, req.URL)
resp, err := l.rt.RoundTrip(req)
if err == nil {
log.Printf("📥 Ответ: %d", resp.StatusCode)
}
return resp, err
}


📦 Использование:

client := &http.Client{
Transport: &LoggingRoundTripper{rt: http.DefaultTransport},
}


💡 Таким образом, вы можете создавать middleware прямо внутри http.Client, например:
• логирование
• кэширование
• модификация заголовков
• retry-логика
• трейсинг

🔗 Подробнее: dev.to/calvinmclean/middleware-and-roundtrippers-in-go-30pa

#golang #httpclient #middleware #webdev #devtools

BY Golang Books




Share with your friend now:
tg-me.com/golang_books/994

View MORE
Open in Telegram


Golang Books Telegram | DID YOU KNOW?

Date: |

How Does Bitcoin Mining Work?

Bitcoin mining is the process of adding new transactions to the Bitcoin blockchain. It’s a tough job. People who choose to mine Bitcoin use a process called proof of work, deploying computers in a race to solve mathematical puzzles that verify transactions.To entice miners to keep racing to solve the puzzles and support the overall system, the Bitcoin code rewards miners with new Bitcoins. “This is how new coins are created” and new transactions are added to the blockchain, says Okoro.

Telegram auto-delete message, expiring invites, and more

elegram is updating its messaging app with options for auto-deleting messages, expiring invite links, and new unlimited groups, the company shared in a blog post. Much like Signal, Telegram received a burst of new users in the confusion over WhatsApp’s privacy policy and now the company is adopting features that were already part of its competitors’ apps, features which offer more security and privacy. Auto-deleting messages were already possible in Telegram’s encrypted Secret Chats, but this new update for iOS and Android adds the option to make messages disappear in any kind of chat. Auto-delete can be enabled inside of chats, and set to delete either 24 hours or seven days after messages are sent. Auto-delete won’t remove every message though; if a message was sent before the feature was turned on, it’ll stick around. Telegram’s competitors have had similar features: WhatsApp introduced a feature in 2020 and Signal has had disappearing messages since at least 2016.

Golang Books from us


Telegram Golang Books
FROM USA